package com.itic.appbase.applications.files.utils;

import java.util.HashMap;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.multipart.MultipartFile;

/**
 * 文件校验
 * Company: ITIC
 * @author  石俊
 * @date 2015年4月16日  下午9:13:57
 * @version 1.0
 */
public class FileValidatorHelper {
    
    private Logger log = LoggerFactory.getLogger(getClass());
    // 最大文件大小-10M 
    private long maxSize = 1024*1024*100000;
    // 定义允许上传的文件扩展名
    private Map<String, String> extMap = new HashMap<String, String>();
    
    public FileValidatorHelper() {
        // 其中images,flashs,medias,files,对应文件夹名称,对应dirName
        // key文件夹名称
        // value该文件夹内可以上传文件的后缀名
        extMap.put("images", "gif,jpg,jpeg,png,bmp");
        extMap.put("flashs", "swf,flv");
        extMap.put("medias", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb");
        extMap.put("files", "doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2");
    }
    
    /**
     * 单个文件校验,校验类型可以根据实际需要添加
     * @param file
     * @return void
     */
    public  String fileValidator(MultipartFile file){
        String errorInfo = "true";
        long fileSize = file.getSize();
        /*String contentType = file.getContentType();
        //String fileType = FilenameUtils.getExtension(file.getName());//获取文件类型
        if (contentType == null || !contentType.startsWith("multipart")) {
            errorInfo = "请求不包含multipart/form-data流";
            log.info("FileValidatorHelper|fileValidator:请求的内容类型为"+contentType+",不包含multipart/form-data流");
        }else */
        if(fileSize>maxSize){
            errorInfo = "上传文件大小超过限制";
            log.info("FileValidatorHelper|fileValidator:上传文件大小为："+fileSize+",超过文件上传最大值"+maxSize);
        }
        return errorInfo;
    }
    
    //get-set方法
    public long getMaxSize() {
        return maxSize;
    }
    public void setMaxSize(long maxSize) {
        this.maxSize = maxSize;
    }
    public Map<String, String> getExtMap() {
        return extMap;
    }
    public void setExtMap(Map<String, String> extMap) {
        this.extMap = extMap;
    }
}
